-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------
/*
IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='Parametro' and XTYPE='U')
BEGIN
	--- Si existen datos en la tabla parametro no la borro
	IF (SELECT COUNT(*) FROM [dbo].[Parametro])=0
	BEGIN
		DROP TABLE [dbo].[Parametro]			
	END
END
--GO

CREATE TABLE [dbo].[Parametro](
	[Id] [int] IDENTITY(1,1) UNIQUE NOT NULL,
	[Parametro] [varchar](64) PRIMARY KEY NOT NULL,
	[Valor] [varchar](512) NOT NULL,
	[Descripcion] [varchar](512) DEFAULT '' NOT NULL,
	[Orden] INT DEFAULT 1 NOT NULL
)
--GO
*/

RETURN;
RETURN;
RETURN;
RETURN;
RETURN;
RETURN;
RETURN;
RETURN;
RETURN;
RETURN;
RETURN;
RETURN;


-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadRol' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadRol]
END
--GO

CREATE TABLE [dbo].[SeguridadRol](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY  NOT NULL,
	[CodRol] [varchar](16) NOT NULL,
	[NombreRol] [varchar](64) NOT NULL,
	[Activo] BIT DEFAULT 1 NOT NULL,
)
--GO
ALTER TABLE [dbo].[SeguridadRol] ADD CONSTRAINT [UQ_SeguridadRol_CodRol] UNIQUE ([CodRol])

ALTER TABLE [dbo].[SeguridadRol] ADD CONSTRAINT [UQ_SeguridadRol_NombreRol] UNIQUE ([NombreRol])

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadUsuario' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadUsuario]
END
--GO

CREATE TABLE [dbo].[SeguridadUsuario](
	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
	[CodRol] [varchar](16) NOT NULL,
	[CodUsuario] [varchar](16) NOT NULL,  --- Documento de identidad
	[Login] [varchar](32) NOT NULL,
	[UserName] [varchar](64) NOT NULL, --- Nombre
	[Password] [varchar](MAX) NOT NULL, --- Clave
	[Activo] BIT DEFAULT 1 NOT NULL
)
--GO
ALTER TABLE [dbo].[SeguridadUsuario] ADD CONSTRAINT [UQ_SeguridadUsuario_CodUsuario] UNIQUE ([CodUsuario])

ALTER TABLE [dbo].[SeguridadUsuario] ADD CONSTRAINT [UQ_SeguridadUsuario_Login] UNIQUE ([Login])

ALTER TABLE [dbo].[SeguridadUsuario] ADD CONSTRAINT [FK_Seguridad.Usuario_Seguridad_Rol] FOREIGN KEY([CodRol])
	REFERENCES [dbo].[SeguridadRol] ([CodRol])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadParametroTipo' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadParametroTipo]
END
--GO
CREATE TABLE [SeguridadParametroTipo]
(
[ID] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[CodParametroTipo] VARCHAR(32) NOT NULL,
[ParametroTipo] VARCHAR(128) NOT NULL,
[Descripcion] VARCHAR(128) NOT NULL,
[Orden] INT NOT NULL DEFAULT 0,
[FechaUltModif] DATETIME NOT NULL DEFAULT GETDATE(),
[Usuario] VARCHAR(32) NOT NULL,
)

ALTER TABLE [SeguridadParametroTipo] ADD CONSTRAINT [UQ_SeguridadParametroTipo_CodParametroTipo] UNIQUE (CodParametroTipo)

ALTER TABLE [SeguridadParametroTipo] ADD CONSTRAINT [UQ_SeguridadParametroTipo_ParametroTipo] UNIQUE (ParametroTipo)

ALTER TABLE [dbo].[SeguridadParametroTipo] ADD CONSTRAINT [FK_SeguridadParametroTipo_Usuario] FOREIGN KEY([Usuario])
	REFERENCES [dbo].[SeguridadUsuario]([Login])

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadParametro' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadParametro]
END
--GO
CREATE TABLE [SeguridadParametro]
(
[ID] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[CodParametro] VARCHAR(64) NOT NULL,
[Parametro] VARCHAR(128) NOT NULL,
[CodParametroTipo] VARCHAR(32) NOT NULL,
[Orden] INT NOT NULL DEFAULT 0,
[Descripcion] VARCHAR(512) NOT NULL,
[Valor] VARCHAR(128) NOT NULL,
[ReadOnly] BIT NOT NULL DEFAULT 0,
[Ocultar] BIT NOT NULL DEFAULT 0,
[FechaUltModif] DATETIME NOT NULL DEFAULT GETDATE(),
[Usuario] VARCHAR(32) NOT NULL,
[TipoDato] VARCHAR(32) NOT NULL DEFAULT 'CADENA'
)

ALTER TABLE [SeguridadParametro] ADD CONSTRAINT [UQ_SeguridadParametro_CodParametro] UNIQUE (CodParametro)

ALTER TABLE [SeguridadParametro] ADD CONSTRAINT [UQ_SeguridadParametro_Parametro] UNIQUE (Parametro)

ALTER TABLE [SeguridadParametro] ADD CONSTRAINT FKSeguridadParametro_SeguridadParametroTipo FOREIGN KEY(CodParametroTipo) 
	REFERENCES SeguridadParametroTipo(CodParametroTipo)

ALTER TABLE [dbo].[SeguridadParametro] ADD CONSTRAINT [FK_SeguridadParametro_Usuario] FOREIGN KEY([Usuario])
	REFERENCES [dbo].[SeguridadUsuario]([Login])


-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadMenu' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadMenu]
END
--GO
CREATE TABLE [SeguridadMenu]
(
	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
	FechaGrab DATETIME NOT NULL DEFAULT GETDATE(),
	UsuarioGrab VARCHAR(32) NOT NULL,
	Codigo VARCHAR(128) NOT NULL, -- EJEMPLO: Aplicacion.Maestros.Recaudos (ESTE CODIGO SE GENERA DE FORMA AUTOMATICA)
	CodigoSuperior VARCHAR(128),
	OrdenNodo INT NOT NULL DEFAULT 0,
	Formulario VARCHAR(128),
	etiqueta VARCHAR(64) NOT NULL,
	descripcion VARCHAR(256) NOT NULL, --- este es el texto que aparecera al pasar el mouse por la opcion
	icono VARBINARY(MAX)
)
--GO
ALTER TABLE [dbo].[SeguridadMenu] ADD CONSTRAINT [UQ_SeguridadMenu_Codigo] UNIQUE ([Codigo])

ALTER TABLE [dbo].[SeguridadMenu] ADD CONSTRAINT [FK_SeguridadMenu_SeguridadMenu] FOREIGN KEY([CodigoSuperior])
	REFERENCES [SeguridadMenu](Codigo)

--ALTER TABLE [dbo].[SeguridadMenu] ADD CONSTRAINT [FK_SeguridadMenu_SeguridadUsuario] FOREIGN KEY([UsuarioGrab])
--REFERENCES [dbo].[SeguridadUsuario] ([Login])

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadRolMenu' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadRolMenu]
END
--GO
CREATE TABLE [SeguridadRolMenu]
(
ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
FechaGrab DATETIME NOT NULL DEFAULT GETDATE(),
UsuarioGrab VARCHAR(32) NOT NULL,
CodMenu VARCHAR(128) NOT NULL,
CodRol VARCHAR(16) NOT NULL
)

ALTER TABLE [SeguridadRolMenu] ADD CONSTRAINT [UQ_CodMenu_CodRol] UNIQUE (CodMenu,CodRol)

ALTER TABLE [SeguridadRolMenu] ADD CONSTRAINT FKMenuRolSYS_Menu FOREIGN KEY(CodMenu) 
	REFERENCES SeguridadMenu(Codigo)

ALTER TABLE [SeguridadRolMenu] ADD CONSTRAINT FKMenuRol_Rol FOREIGN KEY(CodRol) 
	REFERENCES SeguridadRol(CodRol)

--ALTER TABLE [dbo].[SeguridadRolMenu] ADD CONSTRAINT [FK_SeguridadMenuRol_Usuario] FOREIGN KEY([UsuarioGrab])
--REFERENCES [dbo].[SeguridadUsuario]([Login])


--------------------------------------------------------------------------------------------------------------------
--En esta tabla se grabaran algunos datos del usuario en la conexion (CodRol, Host, CodUsuario, FechaInicio, etc...)
--La informacion grabada en esta tabla sera valida UNICAMENTE para la conexion, cada vez que se reinicie dicha conexion,
--se reiniciaran los datos de esta tabla
--------------------------------------------------------------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadDatosSession' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadDatosSession]
END
--GO

CREATE TABLE [SeguridadDatosSession]
(
	 ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
	--,IdConexion INT NOT NULL
	,Host VARCHAR(128) NOT NULL
	,Usuario VARCHAR(32) NOT NULL
	,FechaInicio DATETIME NOT NULL DEFAULT GETDATE()	
);

ALTER TABLE [dbo].[SeguridadDatosSession] ADD CONSTRAINT [UQ_SeguridadDatosSession_Host] UNIQUE ([Host])

ALTER TABLE [dbo].[SeguridadDatosSession] ADD CONSTRAINT [FK_SeguridadDatosSession_Usuario] FOREIGN KEY([Usuario])
REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadLogEventos' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadLogEventos]
END
--GO

CREATE TABLE [SeguridadLogEventos]
(
	 ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY
	,Host VARCHAR(128) NOT NULL
	,Usuario VARCHAR(32) NOT NULL
	,Fecha DATETIME NOT NULL DEFAULT GETDATE()
	,Evento VARCHAR(256) NOT NULL
	,Detalle VARCHAR(MAX)
);

ALTER TABLE [dbo].[SeguridadLogEventos] ADD CONSTRAINT [FK_SeguridadLogEventos_Usuario] FOREIGN KEY([Usuario])
	REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

--IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='MaestroCentroCosto' and XTYPE='U')
--BEGIN
--	DROP TABLE [dbo].[MaestroCentroCosto]
--END
----GO
--CREATE TABLE [dbo].[MaestroCentroCosto](
--	[Id] [int] IDENTITY(1,1) PRIMARY KEY NOT NULL,
--	[CodCentroCosto] [varchar](16) NOT NULL,
--	[CodCentroCostoSuperior] [varchar](16),  --- Este campo guarda el codigo del Grupo del CenCosto, ejemplo (Vicepresidencia, Precidencia, DIDESI, etc..)
--	[NombreCentroCosto] [varchar](128) NOT NULL,
--	[Activo] BIT DEFAULT 1 NOT NULL
--)
----GO
--ALTER TABLE [MaestroCentroCosto] ADD CONSTRAINT [UQ_MaestroCentroCosto_CodCentroCosto] UNIQUE ([CodCentroCosto])
----GO
--ALTER TABLE [MaestroCentroCosto] ADD CONSTRAINT [UQ_MaestroCentroCosto_NombreCentroCosto] UNIQUE ([NombreCentroCosto])
----GO
--ALTER TABLE [dbo].[MaestroCentroCosto] ADD  CONSTRAINT [FK_MaestroCentroCosto_CentroCostoSuperior] FOREIGN KEY([CodCentroCostoSuperior])
--REFERENCES [dbo].[MaestroCentroCosto] ([CodCentroCosto])
----GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='SeguridadConsecutivos' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[SeguridadConsecutivos]
END
--GO
CREATE TABLE [dbo].[SeguridadConsecutivos](
	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
	FechaUltModific SMALLDATETIME NOT NULL,
	UsuarioUltModific VARCHAR(32) NOT NULL,
	CodConsecutivo VARCHAR(32) NOT NULL,
	Descripcion VARCHAR(512) NOT NULL,
	ProximoConsecutivo INT NOT NULL,
	Activo BIT DEFAULT 1 NOT NULL
)
--GO
ALTER TABLE [SeguridadConsecutivos] ADD CONSTRAINT [UQ_SeguridadConsecutivos_CodConsecutivo] UNIQUE ([CodConsecutivo])
--GO
ALTER TABLE [dbo].[SeguridadConsecutivos] ADD CONSTRAINT [FK_SeguridadConsecutivos_Usuario] FOREIGN KEY([UsuarioUltModific])
	REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO
ALTER TABLE [SeguridadConsecutivos] ADD CONSTRAINT CHK_SeguridadConsecutivos_ProximoConsecutivo CHECK ([ProximoConsecutivo]>0)
--GO

-------------------------------------------------------------------------
-------------------------------------------------------------------------
-------------------------------------------------------------------------

--------IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='CartulinaValor' and XTYPE='U')
--------BEGIN
--------	DROP TABLE [dbo].[CartulinaValor]
--------END
----------GO
--------CREATE TABLE [dbo].[CartulinaValor](
--------	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
--------	FechaGrab SMALLDATETIME NOT NULL DEFAULT GETDATE(),
--------	UsuarioGrab VARCHAR(32) NOT NULL,
--------	CodCartulinaValor VARCHAR(16) NOT NULL,
--------	ValorCartulina NUMERIC(18,2) NOT NULL,
--------	ValorTransMasivo NUMERIC(18,2) NOT NULL,
--------	Activo BIT DEFAULT 1 NOT NULL
--------)
----------GO
--------ALTER TABLE [CartulinaValor] ADD CONSTRAINT [UQ_CartulinaValor_CodCartulinaValor] UNIQUE ([CodCartulinaValor])
----------GO
--------ALTER TABLE [dbo].[CartulinaValor] ADD CONSTRAINT [FK_CartulinaValor_Usuario] FOREIGN KEY([UsuarioGrab])
--------	REFERENCES [dbo].[SeguridadUsuario] ([Login])
----------GO
--------ALTER TABLE [CartulinaValor] ADD CONSTRAINT CHK_CartulinaValor_ValorCartulina CHECK ([ValorCartulina]>=0)
----------GO
--------ALTER TABLE [CartulinaValor] ADD CONSTRAINT CHK_CartulinaValor_ValorTransMasivo CHECK ([ValorTransMasivo]>=0)
----------GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='CartulinaTipo' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[CartulinaTipo]
END
--GO
CREATE TABLE [dbo].[CartulinaTipo](
	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
	FechaGrab SMALLDATETIME NOT NULL DEFAULT GETDATE(),
	UsuarioGrab VARCHAR(32) NOT NULL,
	CodCartulinaTipo VARCHAR(32) NOT NULL,
	Descripcion VARCHAR(512) NOT NULL,	
	ValorCartulina NUMERIC(18,2) NOT NULL,
	ValorTransMasivo NUMERIC(18,2) NOT NULL,
	Activo BIT DEFAULT 1 NOT NULL
)
--GO
ALTER TABLE [CartulinaTipo] ADD CONSTRAINT [UQ_CartulinaTipo_CodCartulinaTipo] UNIQUE ([CodCartulinaTipo])
--GO
ALTER TABLE [dbo].[CartulinaTipo] ADD CONSTRAINT [FK_CartulinaTipo_Usuario] FOREIGN KEY([UsuarioGrab])
	REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO
ALTER TABLE [CartulinaTipo] ADD CONSTRAINT CHK_CartulinaTipo_ValorCartulina CHECK ([ValorCartulina]>=0)
--GO
ALTER TABLE [CartulinaTipo] ADD CONSTRAINT CHK_CartulinaTipo_ValorTransMasivo CHECK ([ValorTransMasivo]>=0)
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='Placa' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[Placa]
END
--GO
CREATE TABLE [dbo].[Placa](
	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
	FechaGrab SMALLDATETIME NOT NULL DEFAULT GETDATE(),
	UsuarioGrab VARCHAR(32) NOT NULL,
	CodPlaca VARCHAR(8) NOT NULL,
	CodCartulinaTipo VARCHAR(32) NOT NULL,
	Activo BIT DEFAULT 1 NOT NULL
)
--GO
ALTER TABLE [Placa] ADD CONSTRAINT [UQ_Placa_CodPlaca] UNIQUE ([CodPlaca])
--GO
ALTER TABLE [dbo].[Placa] ADD CONSTRAINT [FK_Placa_Usuario] FOREIGN KEY([UsuarioGrab])
	REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO
ALTER TABLE [dbo].[Placa] ADD CONSTRAINT [FK_Placa_CartulinaTipo] FOREIGN KEY([CodCartulinaTipo])
	REFERENCES [dbo].[CartulinaTipo] ([CodCartulinaTipo])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='Recaudo' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[Recaudo]
END
--GO
CREATE TABLE [dbo].[Recaudo](
	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
	FechaGrab SMALLDATETIME NOT NULL DEFAULT GETDATE(),
	UsuarioGrab VARCHAR(32) NOT NULL,
	CodRecaudo INT NOT NULL,
	CodPlaca VARCHAR(8) NOT NULL,
	Observaciones VARCHAR(512) NOT NULL,
	ValorAdicional NUMERIC(18,2) NOT NULL DEFAULT 0
)
--GO
ALTER TABLE [Recaudo] ADD CONSTRAINT [UQ_Recaudo_CodRecaudo] UNIQUE ([CodRecaudo])
--GO
ALTER TABLE [dbo].[Recaudo] ADD CONSTRAINT [FK_Recaudo_Usuario] FOREIGN KEY([UsuarioGrab])
	REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO
ALTER TABLE [dbo].[Recaudo] ADD CONSTRAINT [FK_Recaudo_Placa] FOREIGN KEY([CodPlaca])
	REFERENCES [dbo].[Placa] ([CodPlaca])
--GO
ALTER TABLE [Recaudo] ADD CONSTRAINT CHK_Recaudo_ValorAdicional CHECK ([ValorAdicional]>=0)
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='Recaudo_ANULACIONES' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[Recaudo_ANULACIONES]
END
--GO
CREATE TABLE [dbo].[Recaudo_ANULACIONES](
	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
	CodRecaudoAnulacion INT NOT NULL,
	FechaGrab_ANULACION SMALLDATETIME NOT NULL DEFAULT GETDATE(),
	UsuarioGrab_ANULACION VARCHAR(32) NOT NULL,
	Observaciones_ANULACION VARCHAR(512) NOT NULL,
	FechaGrab SMALLDATETIME NOT NULL,
	UsuarioGrab VARCHAR(32) NOT NULL,
	CodRecaudo INT NOT NULL,
	CodPlaca VARCHAR(8) NOT NULL,
	Observaciones VARCHAR(512) NOT NULL,
	ValorAdicional NUMERIC(18,2) NOT NULL
)
--GO
ALTER TABLE [Recaudo_ANULACIONES] ADD CONSTRAINT [UQ_RecaudoANULACIONES_CodRecaudoAnulacion] UNIQUE ([CodRecaudoAnulacion])
--GO
ALTER TABLE [dbo].[Recaudo_ANULACIONES] ADD CONSTRAINT [FK_RecaudoANULACION_Usuario] FOREIGN KEY([UsuarioGrab_ANULACION])
	REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='CartulinaEstado' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[CartulinaEstado]
END
--GO
CREATE TABLE [dbo].[CartulinaEstado](
	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
	FechaGrab SMALLDATETIME NOT NULL DEFAULT GETDATE(),
	UsuarioGrab VARCHAR(32) NOT NULL,
	CodCartulinaEstado VARCHAR(16) NOT NULL,
	Descripcion VARCHAR(512) NOT NULL,
	Activo BIT DEFAULT 1 NOT NULL	
)
--GO
ALTER TABLE [CartulinaEstado] ADD CONSTRAINT [UQ_CartulinaEstado_CodCartulinaEstado] UNIQUE ([CodCartulinaEstado])
--GO
ALTER TABLE [dbo].[CartulinaEstado] ADD CONSTRAINT [FK_CartulinaEstado_Usuario] FOREIGN KEY([UsuarioGrab])
	REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='Cartulina' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[Cartulina]
END
--GO
CREATE TABLE [dbo].[Cartulina](
	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
	FechaGrab SMALLDATETIME NOT NULL DEFAULT GETDATE(),
	UsuarioGrab VARCHAR(32) NOT NULL,
	CodCartulina INT NOT NULL,
	CodRecaudo INT NOT NULL,
	CodCartulinaEstado VARCHAR(16) NOT NULL,
	ValorCartulina NUMERIC(18,2) NOT NULL,
	ValorTransMasivo NUMERIC(18,2) NOT NULL,
	ValorUtilidad NUMERIC(18,2) NOT NULL,
	ValorObligaciones NUMERIC(18,2) NOT NULL
)
--GO
ALTER TABLE [Cartulina] ADD CONSTRAINT [UQ_Cartulina_CodCartulina] UNIQUE ([CodCartulina])
--GO
ALTER TABLE [dbo].[Cartulina] ADD CONSTRAINT [FK_Cartulina_Usuario] FOREIGN KEY([UsuarioGrab])
	REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO
ALTER TABLE [dbo].[Cartulina] ADD CONSTRAINT [FK_Cartulina_Recaudo] FOREIGN KEY([CodRecaudo])
	REFERENCES [dbo].[Recaudo] ([CodRecaudo])
--GO
ALTER TABLE [dbo].[Cartulina] ADD CONSTRAINT [FK_Cartulina_CartulinaEstado] FOREIGN KEY([CodCartulinaEstado])
	REFERENCES [dbo].[CartulinaEstado] ([CodCartulinaEstado])
--GO
ALTER TABLE [Cartulina] ADD CONSTRAINT CHK_Cartulina_ValorCartulina CHECK ([ValorCartulina]>=0)
--GO
ALTER TABLE [Cartulina] ADD CONSTRAINT CHK_Cartulina_ValorTransMasivo CHECK ([ValorTransMasivo]>=0)
--GO
ALTER TABLE [Cartulina] ADD CONSTRAINT CHK_Cartulina_ValorUtilidad CHECK ([ValorUtilidad]>=0)
--GO
ALTER TABLE [Cartulina] ADD CONSTRAINT CHK_Cartulina_ValorObligaciones CHECK ([ValorObligaciones]>=0)
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='CartulinaDevoluciones' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[CartulinaDevoluciones]
END
--GO
CREATE TABLE [dbo].[CartulinaDevoluciones](
	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,	
	FechaGrab SMALLDATETIME NOT NULL DEFAULT GETDATE(),
	UsuarioGrab VARCHAR(32) NOT NULL,
	CodCartulinaDevolucion INT NOT NULL,	
	CodCartulinaNueva INT NOT NULL,
	CodCartulina INT NOT NULL,
	CodPlaca VARCHAR(8) NOT NULL,
	Valor NUMERIC(18,2) NOT NULL,
	Observaciones VARCHAR(512) NOT NULL	
)
--GO
ALTER TABLE [CartulinaDevoluciones] ADD CONSTRAINT [UQ_CartulinaDevoluciones_CodCartulinaDevolucion] UNIQUE ([CodCartulinaDevolucion])
--GO
ALTER TABLE [CartulinaDevoluciones] ADD CONSTRAINT [UQ_CartulinaDevoluciones_CodCartulinaNueva] UNIQUE ([CodCartulinaNueva])
--GO
ALTER TABLE [dbo].[CartulinaDevoluciones] ADD CONSTRAINT [FK_CartulinaDevoluciones_Usuario] FOREIGN KEY([UsuarioGrab])
	REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO
ALTER TABLE [dbo].[CartulinaDevoluciones] ADD CONSTRAINT [FK_CartulinaDevoluciones_Cartulina] FOREIGN KEY([CodCartulina])
	REFERENCES [dbo].[Cartulina] ([CodCartulina])
--GO
ALTER TABLE [CartulinaDevoluciones] ADD CONSTRAINT CHK_CartulinaDevoluciones_Valor CHECK ([Valor]>0)
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='ObligacionTipo' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[ObligacionTipo]
END
--GO
CREATE TABLE [dbo].[ObligacionTipo](
	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,	
	FechaGrab SMALLDATETIME NOT NULL DEFAULT GETDATE(),
	UsuarioGrab VARCHAR(32) NOT NULL,
	CodObligacionTipo VARCHAR(16) NOT NULL,
	Descripcion VARCHAR(512) NOT NULL,
	Naturaleza VARCHAR(2) NOT NULL,
	Activo BIT DEFAULT 1 NOT NULL
)
--GO
ALTER TABLE [ObligacionTipo] ADD CONSTRAINT [UQ_ObligacionTipo_CodObligacionTipo] UNIQUE ([CodObligacionTipo])
--GO
ALTER TABLE [ObligacionTipo] ADD CONSTRAINT [UQ_ObligacionTipo_Descripcion] UNIQUE ([Descripcion])
--GO
ALTER TABLE [dbo].[ObligacionTipo] ADD CONSTRAINT [FK_ObligacionTipo_Usuario] FOREIGN KEY([UsuarioGrab])
	REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO
ALTER TABLE [ObligacionTipo] ADD CONSTRAINT CHK_ObligacionTipo_Naturaleza CHECK ([Naturaleza]='DB' OR [Naturaleza]='CR')
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='Obligacion' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[Obligacion]
END
--GO
CREATE TABLE [dbo].[Obligacion](
	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,	
	FechaGrab SMALLDATETIME NOT NULL DEFAULT GETDATE(),
	UsuarioGrab VARCHAR(32) NOT NULL,
	CodObligacion VARCHAR(16) NOT NULL,
	CodObligacionTipo VARCHAR(16) NOT NULL,
	Descripcion VARCHAR(512) NOT NULL,
	Porcentaje NUMERIC(8,3),
	Valor NUMERIC(18,2) NOT NULL,
	Activo BIT DEFAULT 1 NOT NULL,
	Orden INT DEFAULT 0 NOT NULL
)
--GO
ALTER TABLE [Obligacion] ADD CONSTRAINT [UQ_Obligacion_CodObligacion] UNIQUE ([CodObligacion])
--GO
ALTER TABLE [Obligacion] ADD CONSTRAINT [UQ_Obligacion_Descripcion] UNIQUE ([Descripcion])
--GO
ALTER TABLE [dbo].[Obligacion] ADD CONSTRAINT [FK_Obligacion_Usuario] FOREIGN KEY([UsuarioGrab])
	REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO
ALTER TABLE [dbo].[Obligacion] ADD CONSTRAINT [FK_Obligacion_ObligacionTipo] FOREIGN KEY([CodObligacionTipo])
	REFERENCES [dbo].[ObligacionTipo] ([CodObligacionTipo])
--GO
ALTER TABLE [Obligacion] ADD CONSTRAINT CHK_Obligacion_Porcentaje CHECK ([Porcentaje]>=0 AND [Porcentaje]<=100)
--GO
ALTER TABLE [Obligacion] ADD CONSTRAINT CHK_Obligacion_Valor CHECK ([Valor]>=0)
--GO
ALTER TABLE [Obligacion] ADD CONSTRAINT CHK_Obligacion_AlmenosUnoEsCero CHECK (([Porcentaje]>0 AND [Valor]=0) OR ([Porcentaje]=0 AND [Valor]>0))
--GO

-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='CartulinaTipo_Obligacion' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[CartulinaTipo_Obligacion]
END
--GO
CREATE TABLE [dbo].[CartulinaTipo_Obligacion](
	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,	
	FechaGrab SMALLDATETIME NOT NULL DEFAULT GETDATE(),
	UsuarioGrab VARCHAR(32) NOT NULL,
	CodCartulinaTipo VARCHAR(32) NOT NULL,
	CodObligacion VARCHAR(16) NOT NULL,
	Observaciones VARCHAR(512)
)
--GO
ALTER TABLE [CartulinaTipo_Obligacion] ADD CONSTRAINT [UQ_CartulinaObligacionTipo_CartulinaTipoObligacion] UNIQUE ([CodCartulinaTipo],[CodObligacion])
--GO
ALTER TABLE [dbo].[CartulinaTipo_Obligacion] ADD CONSTRAINT [FK_CartulinaObligacionTipo_Usuario] FOREIGN KEY([UsuarioGrab])
	REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO
ALTER TABLE [dbo].[CartulinaTipo_Obligacion] ADD CONSTRAINT [FK_CartulinaObligacionTipo_CartulinaTipo] FOREIGN KEY([CodCartulinaTipo])
	REFERENCES [dbo].[CartulinaTipo] ([CodCartulinaTipo])
--GO
ALTER TABLE [dbo].[CartulinaTipo_Obligacion] ADD CONSTRAINT [FK_CartulinaObligacionTipo_Obligacion] FOREIGN KEY([CodObligacion])
	REFERENCES [dbo].[Obligacion] ([CodObligacion])


-----------------------------------------------------------------
-----------------------------------------------------------------
-----------------------------------------------------------------

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE name='Cartulina_Obligacion' and XTYPE='U')
BEGIN
	DROP TABLE [dbo].[Cartulina_Obligacion]
END
--GO
CREATE TABLE [dbo].[Cartulina_Obligacion](
	ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY,	
	FechaGrab SMALLDATETIME NOT NULL DEFAULT GETDATE(),
	UsuarioGrab VARCHAR(32) NOT NULL,
	CodCartulina INT NOT NULL,
	CodObligacion VARCHAR(16) NOT NULL,
	DescripcionObligacion VARCHAR(512) NOT NULL,
	PorcentajeObligacion NUMERIC(8,3),
	ValorObligacion NUMERIC(18,2) NOT NULL,
)
--GO
ALTER TABLE [Cartulina_Obligacion] ADD CONSTRAINT [UQ_CartulinaObligacion_CartulinaObligacion] UNIQUE ([CodCartulina],[CodObligacion])
--GO
ALTER TABLE [dbo].[Cartulina_Obligacion] ADD CONSTRAINT [FK_CartulinaObligacion_Usuario] FOREIGN KEY([UsuarioGrab])
	REFERENCES [dbo].[SeguridadUsuario] ([Login])
--GO
ALTER TABLE [dbo].[Cartulina_Obligacion] ADD CONSTRAINT [FK_CartulinaObligacion_Cartulina] FOREIGN KEY([CodCartulina])
	REFERENCES [dbo].[Cartulina] ([CodCartulina])
--GO
ALTER TABLE [dbo].[Cartulina_Obligacion] ADD CONSTRAINT [FK_CartulinaObligacion_Obligacion] FOREIGN KEY([CodObligacion])
	REFERENCES [dbo].[Obligacion] ([CodObligacion])

